package BloodTimeHybernateTest;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import BloodTimeHybernateDO.CiudadDistanciaDO;


/**
 * 
 * @author Eduardo D. Sandoval V.
 * 
 */
public class TestCiudadDistanciaDO {

	public static void main(String[] args) {
		Configuration configuration = new AnnotationConfiguration();
		configuration.configure("/BloodTimeHybernateDO/hibernate.cfg.xml");
		SessionFactory sessionFactory = configuration.buildSessionFactory();

		// ------------------------------
		// Insert
		// ------------------------------

		Session session = sessionFactory.openSession();
		session.beginTransaction();
		for (int i = 0; i < 10; i++) {
			CiudadDistanciaDO ciudaddistancia = new CiudadDistanciaDO();
			ciudaddistancia.setDistancia(i + 1);
			session.save(ciudaddistancia);
		}

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// Load
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		CiudadDistanciaDO ciudaddistancia = new CiudadDistanciaDO();

		ciudaddistancia = null;
		ciudaddistancia = (CiudadDistanciaDO) session.load(CiudadDistanciaDO.class, 1);

		System.out.println("Load CiudadDistancia");
		System.out.println("Id: " + ciudaddistancia.getId());
		System.out.println("Distancia: " + ciudaddistancia.getDistancia());

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// Query
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		Query query;

		ciudaddistancia = null;
		query = session.createQuery("FROM CiudadDistanciaDO WHERE id = :ciudaddistanciaId");
		query.setParameter("ciudaddistanciaId", 1);

		ciudaddistancia = (CiudadDistanciaDO) query.uniqueResult();

		System.out.println("Query CiudadDistancia 1");
		System.out.println("Id: " + ciudaddistancia.getId());
		System.out.println("Distancia: " + ciudaddistancia.getDistancia());

		// ---------------------------------------------------------------
		// Delete
		// ---------------------------------------------------------------

		session.delete(ciudaddistancia);

		session.getTransaction().commit();
		session.close();

		// ---------------------------------------------------------------
		// List
		// ---------------------------------------------------------------

		session = sessionFactory.openSession();
		session.beginTransaction();

		System.out.println("List CiudadDistancia");

		List<CiudadDistanciaDO> list = session.createCriteria(CiudadDistanciaDO.class).list();
		for (CiudadDistanciaDO ciudaddistanciaDO : list) {
			System.out.println("Id: " + ciudaddistanciaDO.getId());
			System.out.println("Distancia: " + ciudaddistanciaDO.getDistancia());

		}

		session.getTransaction().commit();
		session.close();

	}
	
}
